JavaMail API ব্যবহার করে আপনি ওয়েব ফর্ম থেকে ইমেইল পাঠানোর একটি কার্যকরী ব্যবস্থা তৈরি করতে পারেন। একটি সাধারণ ওয়েব অ্যাপ্লিকেশনে ব্যবহারকারীরা ফর্ম পূরণ করার পর, সেই ডেটা ব্যবহার করে JavaMail API এর মাধ্যমে ইমেইল প্রেরণ করা হয়। এটি সাধারণত contact form, feedback form, বা registration form এর জন্য ব্যবহৃত হয়, যেখানে ব্যবহারকারীর ইনপুট পাঠানো হয়।
নিচে একটি উদাহরণ দেখানো হয়েছে যেখানে একটি web form থেকে JavaMail ব্যবহার করে ইমেইল প্রেরণ করা হয়েছে। আমরা এখানে একটি Servlet ব্যবহার করব যা ওয়েব ফর্ম থেকে ডেটা গ্রহণ করে এবং JavaMail API এর মাধ্যমে ইমেইল পাঠায়।
ধাপ ১: HTML Web Form তৈরি করা
প্রথমে, একটি ওয়েব ফর্ম তৈরি করতে হবে যা ব্যবহারকারীর ইনপুট নিবে।
contact-form.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contact Form</title>
</head>
<body>
<h2>Contact Us</h2>
<form action="sendEmail" method="POST">
<label for="name">Name:</label><br>
<input type="text" id="name" name="name" required><br><br>
<label for="email">Email:</label><br>
<input type="email" id="email" name="email" required><br><br>
<label for="message">Message:</label><br>
<textarea id="message" name="message" required></textarea><br><br>
<input type="submit" value="Send Message">
</form>
</body>
</html>
ব্যাখ্যা:
- এই HTML ফর্মে name, email, এবং message ইনপুট ফিল্ড আছে, যা ব্যবহারকারী পূর্ণ করবে।
- action="sendEmail" নির্দেশ করে যে ফর্মের ডেটা sendEmail URL এ পাঠানো হবে (যা Java Servlet এর মেথড হিসাবে কাজ করবে)।
ধাপ ২: Java Servlet তৈরি করা যা Web Form থেকে Email পাঠাবে
এখন, একটি Java Servlet তৈরি করতে হবে যা ফর্ম থেকে ডেটা গ্রহণ করবে এবং JavaMail API এর মাধ্যমে ইমেইল পাঠাবে।
SendEmailServlet.java:
import javax.mail.*;
import javax.mail.internet.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class SendEmailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Get form data
String name = request.getParameter("name");
String email = request.getParameter("email");
String messageContent = request.getParameter("message");
// Set up the email properties
String host = "smtp.gmail.com";
final String user = "your-email@gmail.com"; // Sender's email
final String password = "your-password"; // Sender's email password
String to = "recipient-email@example.com"; // Recipient's email
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
// Get the session object for email sending
Session session = Session.getInstance(properties, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
});
try {
// Create the email message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Contact Form Submission from " + name);
message.setText("Name: " + name + "\nEmail: " + email + "\nMessage: " + messageContent);
// Send the email
Transport.send(message);
System.out.println("Email sent successfully!");
// Respond to the user
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body><h3>Thank you, " + name + ". Your message has been sent successfully!</h3></body></html>");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- Form Data গ্রহণ:
- ফর্ম থেকে ইনপুট ডেটা
request.getParameter()ব্যবহার করে গ্রহণ করা হয়েছে। এখানে name, email, এবং message ফিল্ডের ডেটা গ্রহণ করা হচ্ছে।
- ফর্ম থেকে ইনপুট ডেটা
- SMTP সার্ভার কনফিগারেশন:
mail.smtp.host: SMTP সার্ভারের ঠিকানা (যেমন, Gmail এর জন্যsmtp.gmail.com)।mail.smtp.port: SMTP পোর্ট নম্বর (যেমন,587এর জন্য TLS বা465SSL এর জন্য)।mail.smtp.auth: প্রমাণীকরণের জন্যtrueসেট করা হয়েছে।mail.smtp.starttls.enable: TLS এনক্রিপশন সক্ষম করতেtrueসেট করা হয়েছে।
- Email পাঠানো:
MimeMessageতৈরি করে, ইমেইল মেসেজের প্রেরক, রিসিপিয়েন্ট, বিষয় এবং কনটেন্ট সেট করা হয়েছে।- ইমেইল পাঠানোর জন্য
Transport.send()মেথড ব্যবহার করা হয়েছে।
- Response to User:
- মেইল সফলভাবে পাঠানোর পর, একটি কনফার্মেশন মেসেজ ওয়েব পৃষ্ঠায় প্রদর্শিত হবে।
ধাপ ৩: Web.xml এ Servlet ম্যানেজমেন্ট
Servletটি ওয়েব অ্যাপ্লিকেশনে ব্যবহারের জন্য web.xml কনফিগারেশন ফাইলে যোগ করতে হবে।
web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>SendEmailServlet</servlet-name>
<servlet-class>SendEmailServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SendEmailServlet</servlet-name>
<url-pattern>/sendEmail</url-pattern>
</servlet-mapping>
</web-app>
ব্যাখ্যা:
<servlet>: SendEmailServlet কে ওয়েব অ্যাপ্লিকেশনের একটি সার্ভলেট হিসেবে রেজিস্টার করা হয়েছে।<servlet-mapping>:/sendEmailURL প্যাটার্নের জন্য SendEmailServlet কে ম্যাপ করা হয়েছে। এই প্যাটার্নের মাধ্যমে ফর্ম সাবমিট করা হলে Servlet কল হবে।
JavaMail API ব্যবহার করে Web Form থেকে ইমেইল প্রেরণের প্রক্রিয়াটি অত্যন্ত সহজ এবং কার্যকরী। একটি Servlet তৈরি করে, ওয়েব ফর্ম থেকে ইনপুট গ্রহণ করা হয় এবং সেই ইনপুটকে ব্যবহার করে JavaMail API এর মাধ্যমে ইমেইল পাঠানো হয়। এই পদ্ধতিটি contact form, feedback form, registration form ইত্যাদিতে ব্যবহার করা যেতে পারে।
এই উদাহরণে, আমরা SMTP সার্ভার (যেমন Gmail) ব্যবহার করেছি, তবে আপনি অন্য যেকোনো SMTP সার্ভার ব্যবহার করতে পারবেন যেটি JavaMail সমর্থন করে।
Read more